//**************************************************
//	Digit Widgets Spiral Module
// 	Stroke Intropolation
//	Made to be called from Hyperlinked Digit_Widgets Script
//
// Version 3.0 - 09/12/01 - Added Animation Script to Widgets
//	Version 3.1 - 09/15/01 - Updated with Advanced and Standard Animation Scripts
//**************************************************
<zscriptinsert,"Digit_Widgets_Common.txt">
[PD]
[FontSetColor,255,200,0]Stroke Interpolation Functions[FontSetColor,160,160,160]
[VarDef,Snumpts,0]
[VarDef,Enumpts,0]
[VarDef,Minh,0]
[VarDef,Maxh,0]
[VarDef,Minv,0]
[VarDef,Maxv,0]
[VarDef,MaxDeltaH,0]
[VarDef,MaxDeltaV,0]
[VarDef,cnt,0]
[VarDef,cnt1,0]
[VarDef,ox,0]
[VarDef,oy,0]
[VarDef,ex,0]
[VarDef,ey,0]
[VarDef,SStroke,0]
[VarDef,EStroke,0]
[VarDef,Pixcnt,0]
[VarDef,Zdelta,0]
[VarDef,cptr,0]
[VarDef,ISkip,1]
[VarSet,ICTime,.1]
[VarDef,zinit,0]
[VarDef,zfinis,0]
[VarDef,SelTool,8]
[PD]
[iSlider,"Number of Points ",10,1,0,1000,"Number of Points in Interpolation", 
	[varSet,Ipoints,zscript:NumberofPoints]
	[VarSet,ICtime,1.0/Ipoints]

,0,[TextCalcWidth,Distance14537890123]]
[iSlider,"Skip ",1,1,0,1000,"Number of Points in Interpolation to Skip", 
	[varSet,ISkip,zscript:Skip]
,0,[TextCalcWidth,Distance14537890123]]

[iSwitch,"Use Object",0,"Size to Position"]
[iSlider,"SizeIncr",0,1,0,360,"Select Angle Increment ",[VarSet,ssize,zscript:SizeIncr],0,[TextCalcWidth,SizeIncr4123]]
[iSlider,"ZStart",0,1,-4000,4000,"Select Starting Z ",[VarSet,Zinit,zscript:ZStart],0,[TextCalcWidth,SizeIncr4123]]
[iSlider,"ZEnd",0,1,-4000,4000,"Select Ending Z ",[VarSet,zfinis,zscript:ZEnd],0,[TextCalcWidth,SizeIncr4123]]
[iSwitch,"SColorit",0,"Set color to Canvas"]
[PD]
[IButton,"ZPicker ","Pick Zstart and Zend by draggin XYZ Pixol on Canvas",
	[RoutineCall,Mouselook,Hval1,Vval1,Hval2,Vval2,Clicked]
	[RoutineCall,PixolLook,Hval1,Vval1,1,Zval1,dummy,dummy,dummy]
	[Iset,zscript:Zstart,Zval1]
	[VarSet,Zinit,Zval1]
	[RoutineCall,PixolLook,Hval2,Vval2,1,Zval2,dummy,dummy,dummy]
	[Iset,zscript:ZEnd,Zval2]
	[VarSet,Zfinis,Zval2]
]
//[iSlider,"ZTool",0,1,0,11,"Select ZTool ",[VarSet,SelTool,zscript:Ztool],0,[TextCalcWidth,SizeIncr4123]]
[IButton,"ZTool","Set Object that you wish to use",
	[note,"Selecting Tool....",,-1]
	[VarSet,SelTool,[IGet,TOOL:iteminfo]]
	[note,SelTool,,1]
]

[iButton," GetStartstroke ","Grab the Start Stroke Data",
	[VarSet,SStroke,[StrokeGetLast]] //get the last drawn stroke
]
[iButton," GetEndstroke ","Grab the End Stroke Data",
	[VarSet,EStroke,[StrokeGetLast]] //get the last drawn stroke
]
[iButton," DoObjStroke ","Look at Stroke Data",
	[VarSet,Snumpts,[StrokeGetInfo,SStroke,0]]
	[VarSet,Enumpts,[StrokeGetInfo,EStroke,0]]
	[VarSet,Pixcnt,max(Snumpts,Enumpts)]
	[if,Snumpts>=Enumpts,
		[VarSet,Zdelta,pixcnt/Enumpts]
	,
		[VarSet,Zdelta,pixcnt/Snumpts]
	]
	[VarSet,cnt,0]
	[VarSet,cnt1,0]
	[VarSet,ccntr,1.0/ICTime]
	[VarSet,cptr,0]
	[VarInc,ccntr]
	[VarSet,ssize,5]
	
	[if,zscript:useobject,
		[VarSet,ssize,[IGet,Draw:DrawSize]]
		[ISet,Tool:ItemInfo,SelTool]
		//put tool on the canvas
		[canvasclick,320,240,320+10,240+10]
		[IPress,Transform:Move]
		//Size it accordingly
		[TransformSet,320,240,0,ssize,ssize,ssize]
	]

	[Loop,ccntr,
		[VarSet,crecurse,ICTime*cptr]
		[if,zscript:useobject,
				[VarSet,resultz,[Interpolate,crecurse,zinit,zfinis]]
		]
		[Loop,Pixcnt,
	
			[VarSet,ox,[StrokeGetInfo,SStroke,1,cnt]]
			[VarSet,oy,[StrokeGetInfo,SStroke,2,cnt]]
			[VarSet,ex,[StrokeGetInfo,EStroke,1,cnt1]]
			[VarSet,ey,[StrokeGetInfo,EStroke,2,cnt1]]

			[VarSet,resultx,[Interpolate,crecurse,ox,ex]]
			[VarSet,resulty,[Interpolate,crecurse,oy,ey]]
			[if,[iGet,zscript:SColorit],
				[RoutineCall,ZcolorCalc,resultx,resulty,resultz]
			]
			[if,zscript:useobject,
				[TransformSet,resultx,resulty,resultz,ssize,ssize,ssize]
				[IPress,Transform:Snapshot]
			,//else
				[CanvasClick,resultx,resulty]
			]

			[if,Snumpts>=Enumpts,
				[VarSet,cnt,cnt+(1*Iskip)]
				[VarSet,cnt1,cnt1+(zdelta*ISkip)]
			,//else
				[VarSet,cnt1,cnt1+(1*Iskip)]
				[VarSet,cnt,cnt+(zdelta*ISkip)]
			]
			[if,cnt1>Pixcnt,[LoopExit]]
			[if,cnt>Pixcnt,[LoopExit]]
		]

		[VarSet,cnt,0]
		[VarSet,cnt1,0]
		[varInc,cptr]
		[if,cptr>ccntr,[LoopExit]]
	]
]
[varDef,SStrok,(ZObjStrokeV02n250=H50V6BH50V6CH50V6DH50V6EH50V6FH50V70H50V71H50V72H50V73H50V74H50V75H50V76H50V77H50V78H50V79H50V7AH50V7BH50V7CH50V7DH50V7EH50V7FH50V80H50V81H50V82H50V83H50V84H50V85H50V86H50V87H50V88H50V89H50V8AH50V8BH50V8CH50V8DH50V8EH4FV8FH4FV90H4FV91H4FV92H4FV93H4EV94H4EV95H4EV96H4EV97H4EV98H4EV99H4EV9AH4EV9BH4EV9CH4EV9DH4EV9EH4EV9FH4EVA0H4EVA1H4EVA2H4DVA3H4DVA4H4DVA5H4DVA6H4DVA7H4DVA8H4DVA9H4DVAAH4DVABH4DVACH4DVADH4EVADH4EVAEH4EVAFH4EVB0H4FVB0H4FVB1H4FVB2H50VB2H50VB3H50VB4H51VB4H51VB5H52VB5H52VB6H53VB6H54VB7H55VB8H56VB9H57VB9H58VBAH59VBAH5AVBBH5BVBBH5CVBBH5DVBBH5EVBBH61VBCH62VBCH63VBDH64VBDH67VBDH6AVBEH6DVBFH6EVBFH71VC0H72VC0H73VC1H74VC2H75VC2H75VC3H76VC3H76VC4H77VC4H77VC5H77VC6H77VC7H77VC8H77VC9H77VCAH77VCBH77VCCH77VCDH76VCDH76VCEH75VCFH74VD0H73VD0H73VD1H72VD1H71VD2H70VD2H6FVD3H6EVD3H6DVD3H6CVD4H6BVD4H6AVD4H69VD5H68VD5H67VD5H66VD6H65VD6H64VD6H63VD6H62VD6H61VD6H60VD6H5FVD6H5EVD6H5DVD6H5CVD6H5BVD6H5AVD6H59VD6H58VD6H57VD6H56VD6H55VD6H52VD6H51VD6H50VD6H4FVD6H4EVD6H4DVD7H4DVD8H4CVD9H4CVDAH4CVDBH4CVDCH4CVDDH4CVDE
H4CVDFH4CVE0H4CVE1H4CVE4H4CVE5H4CVE6H4CVE7H4CVE8H4CVE9H4CVEAH4CVEBH4CVECH4CVEDH4CVEEH4CVEFH4CVF0H4CVF1H4CVF2H4CVF3H4CVF4H4CVF5H4CVF6H4CVF7H4CVF8H4CVF9H4CVFAH4CVFBH4CVFCH4CVFDH4CVFEH4CVFFH4CV100H4DV101H4DV102H4DV103H4DV104H4DV105H4DV106H4DV107H4DV108H4DV109H4DV10AH4DV10BH4DV10CH4DV10DH4DV10EH4DV10FH4EV10FH4EV110H4EV111H4EV112H4EV113H4EV114H4EV115H4EV116H4EV117H4EV118H4EV119H4EV11AH4EV11BH4EV11CH4EV11DH4EV11EH4EV11FH4EV120H4EV121H4EV122H4EV123H4EV124H4EV125H4EV126H4EV127H4EV128H4EV129H4EV12AH4EV12BH4EV12CH4EV12DH4EV12EH4EV12FH4FV12FH4FV12F)]
[varDef,EStrok,(ZObjStrokeV02n235=H208V99H207V99H206V99H206V98H205V98H204V98H203V98H200V98H1FFV98H1FCV98H1FBV98H1FAV97H1F9V97H1F8V97H1F7V97H1F4V97H1F3V98H1F0V98H1EFV98H1EEV98H1EDV99H1ECV99H1EBV99H1EAV99H1E9V9AH1E8V9AH1E7V9BH1E4V9BH1E3V9BH1E2V9CH1E1V9CH1E0V9DH1DFV9DH1DEV9EH1DDV9FH1DCVA0H1DBVA1H1D8VA2H1D7VA3H1D6VA4H1D5VA5H1D4VA6H1D3VA7H1D3VA8H1D2VA8H1D2VA9H1D1VAAH1D0VABH1CFVAEH1CFVAFH1CEVB0H1CEVB1H1CDVB2H1CDVB3H1CDVB4H1CDVB5H1CDVB6H1CCVB7H1CCVB8H1CCVB9H1CCVBAH1CBVBBH1CBVBCH1CBVBDH1CBVBEH1CBVBFH1CBVC0H1CBVC1H1CBVC2H1CBVC3H1CBVC4H1CBVC5H1CBVC6H1CBVC7H1CBVC8H1CBVC9H1CBVCAH1CBVCBH1CCVCCH1CCVCFH1CDVD0H1CDVD3H1CEVD4H1CFVD7H1D0VD8H1D1VDBH1D1VDCH1D4VDDH1D5VE0H1D6VE1H1D9VE2H1DCVE5H1DDVE6H1E0VE7H1E0VE8H1E3VE9H1E4VEAH1E5VEBH1E8VECH1EBVEDH1ECVEEH1EFVEEH1F0VEFH1F1VF0H1F4VF1H1F5VF2H1F8VF2H1FBVF3H1FCVF4H1FDVF4H1FEVF4H201VF4H202VF5H203VF5H206VF5H207VF6H208VF6H209VF6H20CVF6H20DVF6H210VF6H211VF6H212VF6H213VF6H214VF6H215VF6H216VF6H217VF5H218VF5H219VF5H21AVF4H21BVF4H21CVF4H21CVF3H21DVF3H21EVF2H21FVF1H220VF1H220VF0H221VF0H222VEFH223VEEH224VEDH224VEC
H225VECH225VEBH226VEAH227VE9H227VE8H228VE7H228VE6H229VE5H229VE4H229VE3H229VE2H22AVE1H22AVE0H22AVDFH22AVDEH22BVDDH22BVDAH22BVD9H22CVD8H22CVD7H22CVD6H22CVD5H22CVD4H22CVD1H22CVD0H22CVCFH22CVCEH22CVCBH22CVCAH22CVC9H22CVC8H22CVC7H22CVC6H22CVC5H22CVC4H22CVC3H22CVC2H22CVC1H22BVC0H22BVBFH22BVBEH22BVBDH22BVBCH22AVBCH22AVBBH22AVBAH229VB9H229VB6H228VB5H228VB4H227VB4H227VB3H227VB2H226VAFH225VAFH225VAEH224VADH223VACH223VABH222VAAH221VA9H220VA8H21FVA7H21FVA6H21CVA5H21BVA4H21AVA4H21AVA3H219VA3H216VA2H215VA1H214VA1H213VA0H212V9FH211V9FH210V9EH20FV9DH20EV9DH20DV9DH20DV9CH20CV9CH20BV9CH20BV9BH20AV9BH209V9BH208V9BH208V9AH207V9AH207V99H207V98H207V98)]
[iButton,"Example ","Interpolation Widget Example",
	[if,[Ireset],
		//[Iset,zscript:skip,10]
		[IcolorSet,239,234,30]
		[Note,"Setting Draw Size to 10",zscript:example,2]
		[ISet,Draw:Drawsize,10]
		[note,"Setting Number of Points to 10",zscript:NumberofPoints,2]

		[ISet,zscript:NumberofPoints,10]

		[note,"Next I will draw the first Stroke",zscript:example,0]

		[CanvasStroke,SStrok]

		[note,"And press the GetStartStroke Button",zscript:getstartstroke,0]
		[VarSet,SSTroke,SStrok]

		[note,"I will draw the second Stroke",zscript:example,0]

		[CanvasStroke,EStrok]

		[note,"And press the GetEndStroke Button",zscript:getendstroke,0]
		[VarSet,ESTroke,EStrok]

		[Note,"Next I will press the DoObjStroke button to do the Morph",zscript:DoObjStroke ,0]
		[IPress,zscript:DoObjStroke]

		[Note,"You can also use tools by selecting the tool you wish and pressing Ztool",zscript:ztool,0]
		[Note,"Also select Use Object and enter Start and End Zdepth",zscript:useobject,0]
		[Note,"Size of the objects are controlled by DrawSize",Draw:Drawsize,0]
		[if,zscript:useobject,,	[IToggle,zscript:useobject]]
		[Iset,zscript:zstart,-100]		
		[note,"Setting Zstart to -100",zscript:Zstart,2]
		[Iset,zscript:zEnd,-500]		
		[note,"Setting ZEnd to -500 you can also use the Zpicker and grab and drag mouse",zscript:ZEnd,0]
		[Note,"Next I will press the DoObjStroke button to do the Morph",zscript:DoObjStroke ,0]
		[IPress,zscript:DoObjStroke]
		[Note,"You can control the resolution of the objects by setting the Skip slider",zscript:skip,0]
		[Iset,zscript:skip,10]
		[ISet,Draw:Drawsize,5]
		[IcolorSet,255,0,30]
		[Iset,zscript:zstart,-200]		
		[Iset,zscript:zEnd,-600]		
		[IPress,zscript:DoObjStroke]
	]
]
